/*
 * @Author: wwssaabb
 * @Date: 2021-06-15 09:54:06
 * @LastEditTime: 2021-06-15 10:35:58
 * @FilePath: \demo\koa2_demo\service\web_socket_service.js
 */

//引入获取文件工具方法
const {getFileJsonData} = require('../utils/file_utils')
//导入path模块
const path = require('path')
//引入ws模块 
const WebSocket=require('ws')
const { stringify } = require('querystring')
//创建websocket服务端对象，绑定的端口号为9998
const wss=new WebSocket.Server({port:9998},err=>{
  if(err){
    console.log(err)
  }else{
    console.log('websocket服务器开启成功！')
  }
})

module.exports.listen=()=>{
  //对客户端的连接事件进行监听
  wss.on('connection',client=>{   //client表示的是客户端的socket对象
    console.log('有客户端连接...')
    client.on('message',async msg=>{    //msg表示的是客户端发给服务端的数据
      console.log('客户端发送数据过来了...')
      console.log(msg)
      //向客户端发送数据
      let payload=JSON.parse(msg)
      let action=payload.action
      if (action==='getData'){  
        let filePath=path.join(__dirname,'../data/'+payload.chartName+'.json')
        payload.data=await getFileJsonData(filePath)
        client.send(JSON.stringify(payload))
      } else {
        //原封不动的将所接受的数据发给每一个处于连接状态的客户端
        //wss.clients 所有的客户端的连接
        wss.clients.forEach(client=>{
          client.send(msg)
        })
      }
    })
  })
}
